package com.dragon.modules.yuegou.service.product;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dragon.common.web.PageRequest;
import com.dragon.modules.yuegou.entity.product.GrouponInfoEntity;
import com.dragon.modules.yuegou.enums.product.GrouponInfoCheckStatus;
import com.dragon.modules.yuegou.enums.product.GrouponInfoReleaseType;
import com.dragon.modules.yuegou.enums.product.GrouponInfoStatus;
import com.dragon.modules.yuegou.model.merchant.Merchant;
import com.dragon.modules.yuegou.model.merchant.User;
import com.dragon.modules.yuegou.model.product.GrouponInfo;
import com.dragon.modules.yuegou.query.product.GrouponInfoListQuery;

import java.util.List;

/**
 * 拼团活动信息表 服务接口
 *
 * @author pbuilder generated
 * @date 2019-09-17 14:58:07
 * @version 2.0
 */
public interface GrouponInfoService extends IService<GrouponInfoEntity> {

    /**
     * 拼团列表
     * @param page
     * @param busdId
     * @return
     */
    IPage<GrouponInfo> list(PageRequest page, String busdId);

    /**
     * 保存拼团信息
     * @param grouponInfo
     */
    void saveGrouponInfo(GrouponInfo grouponInfo, GrouponInfoCheckStatus checkStatus, GrouponInfoReleaseType releaseType);

    /**
     * 获取详情
     * @param id
     * @param memberId
     * @return
     */
    GrouponInfo getDetail(String id,String memberId);

    /**
     * 获取详情-后端
     * @param id
     * @return
     */
    GrouponInfo getGrouponById(String id);

    /**
     * 获取列表
     * @param page
     * @param query
     * @return
     */
    IPage<GrouponInfo> search(PageRequest page, GrouponInfoListQuery query);


    /**
     * 获取助力活动的创建商户列表
     * @param merchantId
     * @return
     */
    List<User> getCreateByUserListForGroupon(String merchantId, String busdId);

    /**
     * 获取助力活动的创建商户列表
     * @param merchantId
     * @return
     */
    List<Merchant> merchantList(String merchantId, String busdId);


    /**
     * 审核
     * @param param
     */
    void auditGrouponInfo(GrouponInfo param);

    /**
     * 排序
     * @param infoId
     * @param sort
     */
    void setSort(String infoId, Integer sort);


    /**
     * 活动状态：0-已开启-NORMAL、1-已停止-STO
     * @param infoId
     * @param status
     */
    void setStatus(String infoId, GrouponInfoStatus status);

    /**
     * 精选 0 :否；1：是
     * @param infoId
     * @param choiceness
     */
    void setChoiceness(String infoId, boolean choiceness);

    /**
     * 获取支付订单详情
     * @param orderNo
     * @param memberId
     * @return
     */
    GrouponInfo getPayOrderDetail(String orderNo,String memberId);

    /**
     * 获取海报
     * @param grouponInfoId
     * @return
     */
    String getPoster(String grouponInfoId);


    /**
     * 商户端获取海报
     * @param grouponInfoId
     * @return
     */
    String getMerPoster(String grouponInfoId,String merchantLogo);

    /**
     * 定时检查过期活动
     */
    void checkExpireGrouponInfo();

    /**
     * share_num +1
     * @param grouponInfoId
     */
    void share(String grouponInfoId);
}